package com.sskj.protocol;

import com.sskj.common.dto.DeviceTelemetry;
import com.sskj.common.dto.EncodedCommand;
import com.sskj.common.vo.req.DeviceCommandReq;

import java.io.IOException;

public interface IProtocol {

    /**
     * 编码
     * @param command 设备命令
     * @return 编码后下发给设备的命令
     */
    EncodedCommand encode(DeviceCommandReq command);

    /**
     * 将字节数组解码为消息对象
     * @param data 字节数据
     * @return 消息对象
     * @throws IOException 解码失败(如格式错误)
     */
    DeviceTelemetry decode(byte[] data) throws IOException;
}
